package logic;

import dao.ObraSocialDAO;
import dto.ObraSocialDTO;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author lucifer
 */
public class ObraSocial {

  private int id;
  private String nombre;
  private String contactoNombre;
  private String contactoApellido;
  private String contactoTelefono;
  private String contactoEmail;

  public ObraSocial(int id, String nombre, String contactoNombre, String contactoApellido, String contactoTelefono, String contactoEmail) {
    this.id = id;
    this.nombre = nombre;
    this.contactoNombre = contactoNombre;
    this.contactoApellido = contactoApellido;
    this.contactoTelefono = contactoTelefono;
    this.contactoEmail = contactoEmail;
  }

  public ObraSocial(ObraSocialDTO dto) {
    this.id = dto.getId();
    this.nombre = dto.getNombre();
    this.contactoNombre = dto.getContactoNombre();
    this.contactoApellido = dto.getContactoApellido();
    this.contactoTelefono = dto.getContactoTelefono();
    this.contactoEmail = dto.getContactoEmail();
  }

  public void Save() throws SQLException {
    ObraSocialDTO dto = new ObraSocialDTO(-1, nombre, contactoNombre, contactoApellido, contactoTelefono, contactoEmail);
    ObraSocialDAO dao = ObraSocialDAO.createDAO();
    id = dao.Save(dto);
  }

  public void UpdateContacto() throws SQLException {
    ObraSocialDTO dto = new ObraSocialDTO(id, nombre, contactoNombre, contactoApellido, contactoTelefono, contactoEmail);
    ObraSocialDAO dao = ObraSocialDAO.createDAO();
    dao.UpdateContacto(dto);
  }

  // returns error code
  // 23503 == foreign key issue
  public String Delete() {
    String err = null;
    try {
      ObraSocialDAO.createDAO().Delete(id);
    } catch (SQLException e) {
      err = e.getSQLState();
    }
    return err;
  }

  public static ArrayList<ObraSocialDTO> All() throws SQLException {
    ObraSocialDAO dao = ObraSocialDAO.createDAO();
    return dao.All();
  }

  public static ObraSocialDTO SearchByID(int id) throws SQLException {
    ObraSocialDAO dao = ObraSocialDAO.createDAO();
    return dao.ObraSocialDTO(id);
  }

  public static ArrayList<ObraSocialDTO> SearchByNombre(String name) throws SQLException {
    ObraSocialDAO dao = ObraSocialDAO.createDAO();
    return dao.SearchByNombre(name);
  }

  public ObraSocialDTO EditNombre(String nombre) throws SQLException {
    ObraSocialDAO dao = ObraSocialDAO.createDAO();
    return dao.EditString(id, "nombre", nombre);
  }

  public int getId() {
    return id;
  }

  public String getNombre() {
    return nombre;
  }

  public String getContactoNombre() {
    return contactoNombre;
  }

  public String getContactoApellido() {
    return contactoApellido;
  }

  public String getContactoTelefono() {
    return contactoTelefono;
  }

  public String getContactoEmail() {
    return contactoEmail;
  }
  
}
